#include <iostream>  
using namespace std;  
  
#define MAX_SIZE 100  // 定义栈的最大容量  
  
class Stack {  
private:  
    int data[MAX_SIZE];  // 用数组存储栈元素  
    int top;             // 栈顶指针，指向栈顶元素的下标  
public:  
    Stack() { top = -1; }  // 初始化栈  
    bool isFull() { return top == MAX_SIZE - 1; }  // 判断栈是否已满  
    bool isEmpty() { return top == -1; }  // 判断栈是否为空  
    void push(int x) {  // 入栈操作  
        if (isFull()) {  
            cout << "Stack is full!" << endl;  
            return;  
        }  
        data[++top] = x;  
    }  
    int pop() {  // 出栈操作  
        if (isEmpty()) {  
            cout << "Stack is empty!" << endl;  
            return -1;  
        }  
        return data[top--];  
    }  
    int getTop() {  // 获取栈顶元素  
        if (isEmpty()) {  
            cout << "Stack is empty!" << endl;  
            return -1;  
        }  
        return data[top];  
    }  
};  
  
int main() {  
    Stack s;  
    s.push(1);  
    s.push(2);  
    s.push(3);  
    cout << s.getTop() << endl;  // 输出3  
    cout << s.pop() << endl;  // 输出3  
    cout << s.pop() << endl;  // 输出2  
    cout << s.pop() << endl;  // 输出1  
    cout << s.pop() << endl;  // 输出Stack is empty!  
    return 0;  
}
